In cloud-based computing environments, computing resources such as processing power, storage and software applications are provided as services to users over a network (e.g., the internet). In cloud computing, the use of virtual machines is common to isolate specific computing resources within the cloud for specific users (e.g., different organizations or enterprises that are receiving computing services from the cloud). For example, running a plurality of virtual machines on one or more underlying physical computers lends itself well to partitioning computing resources to different organizational users over the cloud, while keeping the resources of the different users separate, private and secure.
In a private cloud, a set of computing resources is operated for a single organizational user, and made available to that organization over a network. Virtual machines are commonly used in private cloud environments too. For example, because virtual machines can be suspended and restarted on different hosts, the use of virtual machines in a private cloud provides mobility.
In order to provide an application with high availability in a cloud environment (private or otherwise), the application can be run on a virtual machine which is in turn running on a high-availability cluster. High-availability clusters (also known as HA clusters or failover clusters) are groups of computers (nodes) that support running server applications with a minimum of down-time. A high-availability cluster uses groups of redundant computing resources in order to provide continued service when individual system components fail. More specifically, high-availability clusters eliminate single points of failure by providing multiple servers, multiple network connections, redundant data storage, etc.
In computer storage, logical volume management is a flexible method of allocating space on mass-storage devices. In particular, a volume manager can concatenate, stripe together or otherwise combine underlying physical partitions into larger, virtual ones. An administrator can then re-size or move logical volumes, potentially without interrupting system use.
A cluster volume manager extends volume management across the multiple nodes of a cluster, such that each node recognizes the same logical volume layout, and the same state of all volume resources at all nodes. Under cluster volume management, any changes made to volume configuration from any node in the cluster are recognized by all the nodes of the cluster.
In order to support cluster level volume management, the cluster is reconfigured when new nodes join the cluster, and when existing nodes leave the cluster. Conventionally, cluster reconfiguration is driven by a single (master) node in the cluster. Typically, volume management transactions and disk I/O are blocked momentarily during cluster reconfiguration. Such delay is highly undesirable. As mission critical applications are increasingly being moved to cloud based environments, customers want to be able to start such applications as quickly as possible when their hosts are brought up in the cloud (as nodes in a cluster). Even a short period of datacenter downtime can be extremely expensive, especially in certain industries such as banking, telecommunications and transportation.
It would be desirable to address these issues.